/**
 * @author Derek
 * @create 2016/12/28
 */
$(function() {

    //checkbox init
    $('#add_canDel').iCheck({
        checkboxClass: 'icheckbox_minimal-blue'
    });

    //table
    tableInit();
});

function tableInit(){
    $('#table').bootstrapTable({
        url : "/role/query",
        sidePagination : 'server',
        cache : false,// 设置False禁用AJAX请求的缓存
        height : '',
        striped : true,// 使表格带有条纹
        pagination : true,// 设置True在表格底部显示分页工具栏
        pageList : [ 10, 15, 20, 30, 50, 100 ],
        search : false,
        queryParams : queryParams,
        showColumns : false,// 设置为True可显示表格显示/隐藏列表
        showRefresh : false,// 设置为True可显示刷新按钮
        minimumCountColumns : 1,// 表格显示/隐藏列表时可设置最小隐藏的列数
        clickToSelect : false,// 设置为True时点击行即可选中单选/复选框
        toolbar : '#custom-toolbar',
        columns : [
            {field : 'name',title : '角色名称',align : 'center',width : '120',valign : 'middle'},
            {field : 'roleId',title : '系统身份',align : 'center',width : '120',valign : 'middle',
                formatter : function(value) {
                    return showRoles(value);
                }
            },
            {field : 'canDelete',title : '能否删除',align : 'center',width : '40',valign : 'middle',
                formatter : function(value) {
                    return value == true ? "是" : "否";
                }
            },
            {field : 'createTime',title : '创建时间',align : 'center',width : '120',valign : 'middle',
                formatter : function(value) {
                    return getSmpFormatDate(value);
                }
            },
            {field : 'id',title : '操作',align : 'center',width : '120',valign : 'middle',
                formatter : function(value,row) {
                    return showOpt(value, row.name, row.canDelete);
                }
            }
        ]
    });
}
function query(){
    $('#table').bootstrapTable('refreshOptions',{pageNumber:1});
}
function queryParams(params) {
    var queryParam = {
        pageSize : params.limit,
        pageNumber : params.offset
    };
    return queryParam;
}

function showRoles(value){
    var name = "";
    switch(value) {
        case "admin":
            name = "超级管理员"
            break;
        case "manager":
            name = "普通管理员"
            break;
        case "holderProvince":
            name = "省级股东"
            break;
        case "holderCity":
            name = "市级股东"
            break;
        case "holderCounty":
            name = "区县级股东"
            break;
        case "holderService":
            name = "客服"
            break;
        default:
            name = "无";
    }
    return name;
}

/**
 * 新增角色
 */
function saveAdd(){
    var name = $('#add_name').val();
    if(isEmpty(name)){
        notice("角色名称必填！");
        return;
    }
    var canDelete = $('#add_canDel').is(':checked');
    var param = {
        name : name,
        canDelete : canDelete
    }
    //ajax
    ajaxPost("/role/add/save",param, function(data){
        console.log(data);
        if (data && data.code == Const.SUCCESS) {
            success("保存成功！");
            $('#addModal').modal('hide');
            query();
        }else {
            error("警告",data.data);
        }
    });
}

/**
 * 操作html
 * @param id
 * @param name
 * @returns {string}
 */
function showOpt(id, name, canDelete){
    var html = '';
    if(update){
        html += '<a href="javascript:void(0)" class="btn btn-info btn-xs" onclick="editRole(\''+ id + '\',\''+ name +'\')"><i class=\"fa fa-pencil\"></i> 修改</a>';
    }
    if(del && canDelete){
        html += '<a href="javascript:void(0)" class="btn btn-danger btn-xs" onclick="remove(\''+ id + '\',\''+ name +'\')"><i class=\"fa fa-trash-o\"></i> 删除</a>';
    }
    return html;
}

/**
 * 点击编辑按钮
 * @param id
 * @param name
 */
function editRole(id, name){
    $('#edit_id').val(id);
    $('#roleName').val(name);
    initTree(id);
}

/**
 * 保存编辑权限颗粒
 */
function editSave() {
    var id = $('#edit_id').val();
    if(id == ""){
        notice("无法保存，请先选择角色");
        return;
    }

    warnConfirm("确定保存？", function(result){
        if(result) {
            var name = $('#roleName').val();
            //获取选中的tree节点
            var treeObj = $.fn.zTree.getZTreeObj("treeview-checkable");
            var nodes = treeObj.getCheckedNodes(true);

            var value="";
            for(var i=0;i<nodes.length;i++){
                value += nodes[i].code + ",";
            }
            console.log(value);
            var param = {
                id : id,
                name : name,
                perms : value
            }
            $.ajax({
                url : '/role/edit/savePerms',
                type : "post",
                data : param,
                dataType : 'json',
                async : false,
                success : function(data) {
                    console.log(data);
                    if(data && data.code == Const.SUCCESS ){
                        success("保存成功！");
                        query();
                    } else {
                        error(data.data);
                    }
                }
            });
        }
    });
}

/**
 * 清除tree相关数据
 */
function clearTree(){
    $('#edit_id').val('');
    $('#roleName').val('');
}

/**
 * 删除角色
 * @param id
 */
function remove(id, name){
    var param = {
        id : id
    }
    var message = "确定删除‘" + name + "’，删除后将无法恢复？" ;
    warnConfirm(message, function(result){
        if(result) {
            ajaxPost("/role/del", param, function(data){
                //console.log(data);
                if (data && data.code == Const.SUCCESS) {
                    success("删除成功！");
                    query();
                    clearTree();
                }else {
                    error("警告",data.data);
                }
            });
        }
    });
}

/**
 * tree
 *
 */

/**
 * 根据id查询权限，初始化tree
 * @param id
 */
function initTree(id){
    //tree的设置
    var setting = {
        check: {
            enable: true,
            chkboxType: { "Y": "ps", "N": "ps" }
        },
        data: {
            simpleData: {
                enable: true
            }
        },
        view:{
            showIcon:false
        }
    };

   var zNodes = [];
    var param = {
        id : id
    }
    $.ajax({
        url : '/role/tree',
        type : "post",
        data : param,
        dataType : 'json',
        async : false,
        success : function(data) {
            console.log( data.data);
            if(data && data.code == Const.SUCCESS ){
                zNodes = data.data;
            }
        }
    });

    $.fn.zTree.init($("#treeview-checkable"), setting, zNodes);
}


